package com.ruoyi.common.core.domain.entity;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Builder;
import lombok.Data;
import lombok.experimental.Tolerate;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.Date;
import java.util.List;


/**
 * 区域字典对象 sys_region
 *
 * @author ruoyi
 * @date 2025-08-13
 */
@Data
@ApiModel(value="区域字典对象", description="区域字典")
@TableName("sys_region")
@Builder
public class SysRegion extends BaseEntity implements Serializable {

    private static final long serialVersionUID=1L;


    /**
     *  区域主键ID
     * 对应字典表： $column.dictTable ，对应字段值： ，对应字段名：$column.dictName
     */

    @Excel(name = "区域主键ID")
    private  String  id;

    /**
     *  上级区域ID
     * 对应字典表： $column.dictTable ，对应字段值： ，对应字段名：$column.dictName
     */

    @Excel(name = "上级区域ID")
    @ApiModelProperty(value = "上级区域ID")
    @NotBlank(message = "上级区域ID不能为空")
    private  String  parentId;

    /**
     *  区域名称
     * 对应字典表： $column.dictTable ，对应字段值： ，对应字段名：$column.dictName
     */

    @Excel(name = "区域名称")
    @ApiModelProperty(value = "区域名称")
    @NotBlank(message = "区域名称不能为空")
    private  String  regionName;

    /**
     *  区域code码
     * 对应字典表： $column.dictTable ，对应字段值： ，对应字段名：$column.dictName
     */

    @Excel(name = "区域code码")
    @ApiModelProperty(value = "区域code码")
    @NotBlank(message = "区域code码不能为空")
    private  String  regionCode;

    /**
     *  区域类型: 1:行政类 2:自划区
     * 对应字典表： $column.dictTable ，对应字段值： ，对应字段名：$column.dictName
     */

    @Excel(name = "区域类型: 1:行政类 2:自划区")
    @ApiModelProperty(value = "区域类型: 1:行政类 2:自划区")
    @NotBlank(message = "区域类型: 1:行政类 2:自划区不能为空")
    private  String  regionType;

    /**
     *  自划类型: 1:直接添加 2:整合代替
     * 对应字典表： $column.dictTable ，对应字段值： ，对应字段名：$column.dictName
     */

    @Excel(name = "自划类型: 1:直接添加 2:整合代替")
    @ApiModelProperty(value = "自划类型: 1:直接添加 2:整合代替")
    private  String  defineRegionType;

    /**
     *  整合区域(full_path用逗号隔开)
     * 对应字典表： $column.dictTable ，对应字段值： ，对应字段名：$column.dictName
     */

    @Excel(name = "整合区域(full_path用逗号隔开)")
    @ApiModelProperty(value = "整合区域(full_path用逗号隔开)")
    private  String  defineRegionMerge;

    /**
     *  区域状态：0:禁用，1:启用 2:草稿
     * 对应字典表： $column.dictTable ，对应字段值： ，对应字段名：$column.dictName
     */

    @Excel(name = "区域状态：0:禁用，1:启用 2:草稿")
    @ApiModelProperty(value = "区域状态：0:禁用，1:启用 2:草稿")
    @NotBlank(message = "区域状态：0:禁用，1:启用 2:草稿不能为空")
    private  String  status;

    /**
     *  区域层级
     * 对应字典表： $column.dictTable ，对应字段值： ，对应字段名：$column.dictName
     */

    @Excel(name = "区域层级")
    @ApiModelProperty(value = "区域层级")
    @NotBlank(message = "区域层级不能为空")
    private  String  level;

    /**
     *  区域完整名称(用/分隔)
     * 对应字典表： $column.dictTable ，对应字段值： ，对应字段名：$column.dictName
     */

    @Excel(name = "区域完整名称(用/分隔)")
    @ApiModelProperty(value = "区域完整名称(用/分隔)")
    @NotBlank(message = "区域完整名称(用/分隔)不能为空")
    private  String  fullName;

    /**
     *  区域完整路径(用斜线分隔code)
     * 对应字典表： $column.dictTable ，对应字段值： ，对应字段名：$column.dictName
     */

    @Excel(name = "区域完整路径(用斜线分隔code)")
    @ApiModelProperty(value = "区域完整路径(用斜线分隔code)")
    @NotBlank(message = "区域完整路径(用斜线分隔code)不能为空")
    private  String  fullPath;

    /**
     *  全路径拼音
     * 对应字典表： $column.dictTable ，对应字段值： ，对应字段名：$column.dictName
     */

    @Excel(name = "全路径拼音")
    @ApiModelProperty(value = "全路径拼音")
    @NotBlank(message = "全路径拼音不能为空")
    private  String  fullPinyin;

    /**
     *  区域名称拼音
     * 对应字典表： $column.dictTable ，对应字段值： ，对应字段名：$column.dictName
     */

    @Excel(name = "区域名称拼音")
    @ApiModelProperty(value = "区域名称拼音")
    @NotBlank(message = "区域名称拼音不能为空")
    private  String  pinyin;

    /**
     *  备注
     * 对应字典表： $column.dictTable ，对应字段值： ，对应字段名：$column.dictName
     */

    @Excel(name = "备注")
    @ApiModelProperty(value = "备注")
    private  String  remark;

    /**
     *  创建时间
     * 对应字典表： $column.dictTable ，对应字段值： ，对应字段名：$column.dictName
     */

    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "创建时间", width = 30, dateFormat = "yyyy-MM-dd")
    @ApiModelProperty(value = "创建时间")
    private  Date  createTime;

    /**
     *  更新时间
     * 对应字典表： $column.dictTable ，对应字段值： ，对应字段名：$column.dictName
     */

    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "更新时间", width = 30, dateFormat = "yyyy-MM-dd")
    @ApiModelProperty(value = "更新时间")
    private  Date  updateTime;


    /**
     *  创建者名称(用户名称)
     * 对应字典表： $column.dictTable ，对应字段值： ，对应字段名：$column.dictName
     */

    @Excel(name = "创建者名称(用户名称)")
    @ApiModelProperty(value = "创建者名称(用户名称)")
    private  String  createrName;

    /**
     *  删除标志：0 正常，1 删除
     * 对应字典表： $column.dictTable ，对应字段值： ，对应字段名：$column.dictName
     */

    @Excel(name = "删除标志：0 正常，1 删除")
    @ApiModelProperty(value = "删除标志：0 正常，1 删除")
    @NotNull(message = "删除标志：0 正常，1 删除不能为空")
    private  Long  deleted;

    /**
     *  数据版本
     * 对应字典表： $column.dictTable ，对应字段值： ，对应字段名：$column.dictName
     */

    @Excel(name = "数据版本")
    @ApiModelProperty(value = "数据版本")
    @NotBlank(message = "数据版本不能为空")
    private  String  version;
    @TableField(exist = false)
    private List<String> ids;
    @Tolerate
    public SysRegion(){}
}
